package com.zichong.wiki.controller;

import com.zichong.wiki.domain.Test;
import com.zichong.wiki.service.TestService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

/**
 * @RestController = @Controller + @ResponseBody
 * @ResponseBody 表示返回一个字符串或JSON对象
 */
@RestController
//@Controller // 该注解表示返回一个页面, 即访问 /hello 的时候, 返回一个 Hello 页面
public class TestController {

    @Autowired
    private TestService testService;

    /**
     * Spring 扫描到 @Value 时, 就会去找 test.hello 配置项, 通过冒号来声明默认值
     */
    @Value("${test.hello:TEST}")
    private String testHello;

    @GetMapping("/hello1")
    public String testHello() {
        return testHello;
    }

    /**
     * 如果只是简单地用 @RequestMapping, 表示这个接口支持所有的请求方式
     * 如果用 @GetMapping("/hello"), 表示只支持 get
     * 等价于 @RequestMapping(value = "/hello", method = RequestMethod.GET)
     */
    @RequestMapping("/hello")
    public String hello() {
        return "Hello";
    }

    @GetMapping("/test/list")
    public List<Test> testList() {
        return testService.list();
    }
}
